#在计算加减乘除前，先输出一个分隔线（=====）
#方案6：使用修饰器完成
# 修饰器，既可以有返回值、也可以没有返回值，他的样式是多种多样的。
# 不同格式的参数，2个或3个，
# 当然，参数个数、类型都是可以多样的
def zhuangshiqi(function):
    def wrapper(*args,**kwargs):
        print("============")
        x=function(*args,**kwargs)
        return x
    return wrapper

@zhuangshiqi
def jiafa(a,b):
    return a+b
@zhuangshiqi
def jiafa3(a,b,c):
    return a+b+c
@zhuangshiqi
def jianfa(a,b):
    return a-b
@zhuangshiqi
def chengfa(a,b):
    return a*b
@zhuangshiqi
def chufa(a,b):
    return a/b

print(jiafa(3,5))
print(jiafa3(4,5,6))
print(jianfa(4,5))
print(chengfa(5,6))
print(chufa(4,8))















# def decorator(function):
#     def wrapper(*args,**kwargs):
#         print("=====开始===========")            
#         x=function(*args,**kwargs)   #执行原函数    
#         return x 
#     return wrapper


# @decorator
# def myAdd(a,b):
#     return a+b

# @decorator    
# def myAdd3(a,b,c):
#     return a+b+c

# @decorator
# def mySubstract(a,b):
#     return a-b

# @decorator
# def myMultiply(a,b):
#     return a*b

# @decorator
# def myDivide(a,b):
#     return a/b


# print(myAdd(3,4))
# print(myAdd3(3,4,5))
# print(mySubstract(6, 7))
# print(myMultiply(6,6))
# print(myDivide(5,6))















# # def decorator(function):
# #     '''
# #     最外层（第1层）decorator是装饰器名称
# #     function：参数，即需要装饰的函数的名称（函数名称）
# #     return：返回值wrapper，为了保持与原函数参数一致（返回值为函数）
# #     '''
# #     def wrapper(*arg,**args):
# #         '''
# #            内部函数（第2层）函数，该函数用于实现“额外功能”（装饰作用）
# #            *arg,**args：参数保持与需要装饰的函数参数一致，这里用*arg和**args代替
# #         '''
# #         #Todo  执行函数前装饰操作（要做什么写在这里，额外功能代码，装饰功能，额外功能代码）            
# #         function()   #执行原函数
# #     return wrapper